﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EIIS.Infrastructure.Model.System.Authority;
using EIIS.FrameWork.Service;

namespace EIIS.Infrastructure.Service.System.Authority
{
    public interface IActionPermissionManager : IGenericManager<ActionPermission>
    {
        /// <summary>
        /// 反射获取所有权限功能
        /// </summary>
        /// <returns></returns>
        IList<ActionPermission> GetAllActionByAssembly();

        /// <summary>
        /// 反射获取所有权限功能
        /// </summary>
        /// <param name="total">总数</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页条数</param>
        /// <param name="order">排序字段</param>
        /// <param name="sort">排序规则：asc,desc</param>
        /// <param name="strQuery">查询关键字（只查ActionName和ControllerName）</param>
        /// <returns></returns>
        IList<ActionPermission> GetAllActionByAssembly(out long total, int page, int rows, string order, string sort, string strQuery);

        /// <summary>
        /// 反射获取所有权限页面
        /// </summary>
        /// <returns></returns>
        IList<ActionPermission> GetAllPageActionByAssembly();

        /// <summary>
        /// 反射获取所有权限页面
        /// </summary>
        /// <param name="total">总数</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页条数</param>
        /// <param name="order">排序字段</param>
        /// <param name="sort">排序规则：asc,desc</param>
        /// <param name="strQuery">查询关键字（只查ActionName和ControllerName）</param>
        /// <returns></returns>
        IList<ActionPermission> GetAllPageActionByAssembly(out long total, int page, int rows, string order, string sort, string strQuery);

        /// <summary>
        /// 获取所有功能权限
        /// </summary>
        /// <param name="total">总数</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页条数</param>
        /// <param name="order">排序字段</param>
        /// <param name="sort">排序规则：asc,desc</param>
        /// <returns></returns>
        IList<ActionPermission> LoadAllWithPage(out long total, int page, int rows, string order, string sort);
    }
}
